package com.foreknow.oop11;

import java.io.*;

/**
 * 文档：java.io包
 *
 * I(Input 输入流)/O(Output 输出流)流：主要的作用就是对文件的读写
 * 读操作：使用输入流 input
 * 写操作：使用输出流 output
 *
 * 凡是以InputStream/OutputStream结尾的都是字节流
 * 凡是以Reader/Writer结尾的都是字符流
 *
 * 根据文档可以看到流的分类：
 * 1. 输入流(InputStream:此抽象类是表示字节输入流的所有类的超类。)/输出流(OutputStream:此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。)
 * 2. 字节流(对图片的复制)/字符流(对文档操作)
 * 3. 节点流(直接关联数据源的)/处理流(是对节点的一个功能的增强)
 *
 * 综合题：
 * 我们要从控制台录入5次学生的信息，然后要将这5个学生的信息保存到一个文本文件中（student.txt）
 * 文件中的数据格式：
 * 学生的编号(id)   学生的姓名(name)   年龄(age)   电话号码(phone)
 *   100             tom              12       123123123123123  Student对象
 *   101             jazz             34       234123423432444
 *
 * 我们在要读取student.txt这个文件，然后在控制台输出所有的学生信息
 *
 * 分析：发现类   会用到哪些知识点： BufferedReader FileReader   BufferedWriter   FileWriter 集合（List）
 */
public class Test {
  public static void main(String[] args) {
    try {
      //这是一个节点流
      FileReader fr = new FileReader("/Users/imac/Desktop/lib/Test.java");
      //这是一个处理流，就是对FileReader节点流功能的增强
      BufferedReader br = new BufferedReader(fr);

      FileWriter fw = new FileWriter("/Users/imac/Desktop/lib/Test_New.java");
      BufferedWriter bw = new BufferedWriter(fw);

      //读取一个文本行
      String str = br.readLine();
      while (str!=null){
        //将读取到的一个文本行写入到目标文件中
        bw.write(str);
        //换行
        bw.newLine();
        //读取下一行
        str = br.readLine();
      }
      //关闭资源
      br.close();
      bw.close();


    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }

  }
}
